package com.example.micro_property_springboot.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.micro_property_springboot.pojo.SysOperLog;
import com.example.micro_property_springboot.pojo.vo.OperLogQueryVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 操作日志Mapper
 * 提供操作日志的数据库操作方法
 */
@Mapper
public interface SysOperLogMapper extends BaseMapper<SysOperLog> {
    
    /**
     * 分页查询操作日志
     */
    List<SysOperLog> queryOperLogWithPage(@Param("query") OperLogQueryVO query, 
                                         @Param("startIndex") Integer startIndex, 
                                         @Param("pageSize") Integer pageSize);
    
    /**
     * 查询操作日志总数
     */
    Integer queryOperLogCount(@Param("query") OperLogQueryVO query);
    
    /**
     * 根据用户ID查询操作日志
     */
    List<SysOperLog> getByUserId(@Param("userId") Long userId);
    
    /**
     * 根据操作模块查询操作日志
     */
    List<SysOperLog> getByOperModule(@Param("operModule") String operModule);
    
    /**
     * 根据操作类型查询操作日志
     */
    List<SysOperLog> getByOperType(@Param("operType") String operType);
    
    /**
     * 清空操作日志
     */
    Integer truncateOperLog();
    
    /**
     * 删除指定时间之前的操作日志
     */
    Integer deleteOldOperLogs(@Param("date") String date);
    
    /**
     * 查询所有不重复的操作模块
     */
    List<String> queryDistinctModules();
}